home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2004 #6
/
Amiga Plus CD - 2004 - No. 06.iso
/
AmigaPlus
/
Begleitmaterial
/
50Tools
/
Grafik
/
PerfectPaint
/
rexx
/
box
/
Funny_Border.rx
< prev
next >
Wrap
Text File
|
2002-08-20
|
4KB
|
246 lines
/* Box arexx V1.1*/
options results
parse ARG Port x1 y1 x2 y2 b
ADDRESS value Port
ADDRESS COMMAND
type=0
if EXISTS('PerfectPaint:Prefs/Rexx_Prefs/Funny_Border') THEN DO
IF OPEN('lfile','PerfectPaint:Prefs/Rexx_Prefs/Funny_Border', "R") then DO
type = READLN('lfile')
CALL CLOSE('lfile')
END
END
ADDRESS value Port
pp_DialogInit 250 60 "*Funny*Border*" 1
pp_Cycle 0 50 8 170 16 "Type" 1 "Dog*Ear|Rabbit*Ear|Rounded*Box|Filled*Rounded*Box|Old*Style|Light*Effect|Shade*Effect" type
pp_Dialog
rc=result
if rc=0 then
do
EXIT
end
pp_GetDialog 0
type=result
CALL SavePrefs('Funny_Border',type)
ADDRESS value Port
pp_updateUndo
if type=0 then DO
xb=trunc(((abs(x1-x2)+1)*10)/100);yb=trunc(((abs(y1-y2)+1)*10)/100)
ab=xb
if xb>yb then
do
ab=yb
end
pp_startpoly
pp_addpoly x1 y1+ab
pp_addpoly x1+ab y1
pp_addpoly x2-ab y1
pp_addpoly x2 y1+ab
pp_addpoly x2 y2-ab
pp_addpoly x2-ab y2
pp_addpoly x1+ab y2
pp_addpoly x1 y2-ab
pp_addpoly x1 y1+ab
pp_endpoly
END
if type=1 then DO
xb=trunc(((abs(x1-x2)+1)*10)/100)
yb=trunc(((abs(y1-y2)+1)*10)/100)
ab=xb
if xb>yb then
do
ab=yb
end
pp_line x1+ab y1 x2-ab y1
pp_line x2 y1+ab x2 y2-ab
pp_line x2-ab y2 x1+ab y2
pp_line x1 y2-ab x1 y1+ab
pp_spline x1 y1+ab x1+ab y1 x1 y1
pp_spline x2-ab y1 x2 y1+ab x2 y1
pp_spline x2 y2-ab x2-ab y2 x2 y2
pp_spline x1+ab y2 x1 y2-ab x1 y2
END
if type=2 then DO
xb=trunc(((abs(x1-x2)+1)*10)/100)
yb=trunc(((abs(y1-y2)+1)*10)/100)
ab=xb
if xb>yb then
do
ab=yb
end
ab2=trunc(ab/3)
pp_line x1+ab y1 x2-ab y1
pp_line x2 y1+ab x2 y2-ab
pp_line x2-ab y2 x1+ab y2
pp_line x1 y2-ab x1 y1+ab
pp_spline x1 y1+ab x1+ab y1 x1+ab2 y1+ab2
pp_spline x2-ab y1 x2 y1+ab x2-ab2 y1+ab2
pp_spline x2 y2-ab x2-ab y2 x2-ab2 y2-ab2
pp_spline x1+ab y2 x1 y2-ab x1+ab2 y2-ab2
END
if type=3 then DO
xb=trunc(((abs(x1-x2)+1)*20)/100)
yb=trunc(((abs(y1-y2)+1)*20)/100)
ab=xb
if xb>yb then
do
ab=yb
end
ab2=trunc(ab/3)
pp_StartPoly
pp_addpoly (x2+x1)/2 y1
pp_addpoly x2-ab y1
pp_addpoly x2-ab2 y1+ab2
pp_addpoly x2 y1+ab
pp_addpoly x2 (y1+y2)/2
pp_addpoly x2 y2-ab
pp_addpoly x2-ab2 y2-ab2
pp_addpoly x2-ab y2
pp_addpoly (x2+x1)/2 y2
pp_addpoly x1+ab y2
pp_addpoly x1+ab2 y2-ab2
pp_addpoly x1 y2-ab
pp_addpoly x1 (y2+y1)/2
pp_addpoly x1 y1+ab
pp_addpoly x1+ab2 y1+ab2
pp_addpoly x1+ab y1
pp_EndPolySF
/*
pp_StartPoly
pp_addpoly x1+ab y1
pp_addpoly x2-ab y1
pp_addpoly x2-ab y1
pp_addpoly x2-ab2 y1+ab2
pp_addpoly x2 y1+ab
pp_addpoly x2 y1+ab
pp_addpoly x2 y2-ab
pp_addpoly x2 y2-ab
pp_addpoly x2-ab2 y2-ab2
pp_addpoly x2-ab y2
pp_addpoly x2-ab y2
pp_addpoly x1+ab y2
pp_addpoly x1+ab y2
pp_addpoly x1+ab2 y2-ab2
pp_addpoly x1 y2-ab
pp_addpoly x1 y2-ab
pp_addpoly x1 y1+ab
pp_addpoly x1 y1+ab
pp_addpoly x1+ab2 y1+ab2
pp_addpoly x1+ab y1
pp_EndPolyS
*/
END
if type=4 then DO
xb=trunc(((abs(x1-x2)+1)*20)/100)
yb=trunc(((abs(y1-y2)+1)*20)/100)
ab=xb
if xb>yb then
do
ab=yb
end
ac=trunc(ab/2)
pp_STARTpoly
pp_ADDpoly x1 y1
pp_ADDpoly x1+ac y1
pp_ADDpoly x1+ac y1+ab
pp_ADDpoly x1 y1+ab
pp_ADDpoly x1 y2-ab
pp_ADDpoly x1+ac y2-ab
pp_ADDpoly x1+ac y2
pp_ADDpoly x1 y2
pp_ADDpoly x1 y2-ac
pp_ADDpoly x1+ab y2-ac
pp_ADDpoly x1+ab y2
pp_ADDpoly x2-ab y2
pp_ADDpoly x2-ab y2-ac
pp_ADDpoly x2 y2-ac
pp_ADDpoly x2 y2
pp_ADDpoly x2-ac y2
pp_ADDpoly x2-ac y2-ab
pp_ADDpoly x2 y2-ab
pp_ADDpoly x2 y1+ab
pp_ADDpoly x2-ac y1+ab
pp_ADDpoly x2-ac y1
pp_ADDpoly x2 y1
pp_ADDpoly x2 y1+ac
pp_ADDpoly x2-ab y1+ac
pp_ADDpoly x2-ab y1
pp_ADDpoly x1+ab y1
pp_ADDpoly x1+ab y1+ac
pp_ADDpoly x1 y1+ac
pp_ADDpoly x1 y1
pp_ENDpoly
END
if type=5 then DO
pp_PenType 0
PP_EffectOn
j=0
do i=90 to 10 by -10
pp_Light i
pp_Box x1+j y1+j x2-j y2-j
j=j+1
end
pp_EffectOff
END
if type=6 then DO
pp_PenType 0
PP_EffectOn
j=0
do i=90 to 10 by -10
pp_Shade i
pp_Box x1+j y1+j x2-j y2-j
j=j+1
end
pp_EffectOff
END
EXIT
SavePrefs: PROCEDURE
Prefname='PerfectPaint:Prefs/Rexx_Prefs/'||ARG(1)
if EXISTS(Prefname) THEN DO
ADDRESS COMMAND
'delete >nil: '||Prefname
END
IF OPEN('pfile',PrefName,'W') THEN DO
do i=2 to ARG()
CALL WRITELN('pfile',ARG(i))
end
CALL CLOSE('pfile')
RETURN